css: Disallow bypassing value computation
authorBenjamin Otte <otte@redhat.com>
Fri, 24 Oct 2014 18:17:11 +0000 (20:17 +0200)
committerBenjamin Otte <otte@redhat.com>
Fri, 24 Oct 2014 19:31:40 +0000 (21:31 +0200)
This special code was added back in the days when computation wasn't
idemptotent. These days it is.

Also, the bypass code path is only used in fallback code that is pretty
much unused.

gtk/gtkcsscomputedvalues.c
gtk/gtkcsscomputedvaluesprivate.h
gtk/gtkcsslookup.c
gtk/gtkcsslookupprivate.h
gtk/gtkstyleproperties.c

index 52d6e5e7b3b6d92e2553ccb43528844df2285500..18d5a8dac39f6b8ef29302f1b54006f07a57c767 100644 (file)
@@ -146,40 +146,6 @@ _gtk_css_computed_values_compute_value (GtkCssComputedValues    *values,
 
   value = _gtk_css_value_compute (specified, id, provider, scale, values, parent_values, &dependencies);
 
-  _gtk_css_computed_values_set_value (values, id, value, dependencies, section);
-
-  _gtk_css_value_unref (value);
-  _gtk_css_value_unref (specified);
-}
-
-void
-_gtk_css_computed_values_set_animated_value (GtkCssComputedValues *values,
-                                             guint                 id,
-                                             GtkCssValue          *value)
-{
-  gtk_internal_return_if_fail (GTK_IS_CSS_COMPUTED_VALUES (values));
-  gtk_internal_return_if_fail (value != NULL);
-
-  if (values->animated_values == NULL)
-    values->animated_values = g_ptr_array_new_with_free_func ((GDestroyNotify)_gtk_css_value_unref);
-  if (id >= values->animated_values->len)
-   g_ptr_array_set_size (values->animated_values, id + 1);
-
-  if (g_ptr_array_index (values->animated_values, id))
-    _gtk_css_value_unref (g_ptr_array_index (values->animated_values, id));
-  g_ptr_array_index (values->animated_values, id) = _gtk_css_value_ref (value);
-
-}
-
-void
-_gtk_css_computed_values_set_value (GtkCssComputedValues *values,
-                                    guint                 id,
-                                    GtkCssValue          *value,
-                                    GtkCssDependencies    dependencies,
-                                    GtkCssSection        *section)
-{
-  gtk_internal_return_if_fail (GTK_IS_CSS_COMPUTED_VALUES (values));
-
   if (values->values == NULL)
     values->values = g_ptr_array_new_full (_gtk_css_style_property_get_n_properties (),
                                           (GDestroyNotify)_gtk_css_value_unref);
@@ -214,6 +180,28 @@ _gtk_css_computed_values_set_value (GtkCssComputedValues *values,
 
       g_ptr_array_index (values->sections, id) = gtk_css_section_ref (section);
     }
+
+  _gtk_css_value_unref (value);
+  _gtk_css_value_unref (specified);
+}
+
+void
+_gtk_css_computed_values_set_animated_value (GtkCssComputedValues *values,
+                                             guint                 id,
+                                             GtkCssValue          *value)
+{
+  gtk_internal_return_if_fail (GTK_IS_CSS_COMPUTED_VALUES (values));
+  gtk_internal_return_if_fail (value != NULL);
+
+  if (values->animated_values == NULL)
+    values->animated_values = g_ptr_array_new_with_free_func ((GDestroyNotify)_gtk_css_value_unref);
+  if (id >= values->animated_values->len)
+   g_ptr_array_set_size (values->animated_values, id + 1);
+
+  if (g_ptr_array_index (values->animated_values, id))
+    _gtk_css_value_unref (g_ptr_array_index (values->animated_values, id));
+  g_ptr_array_index (values->animated_values, id) = _gtk_css_value_ref (value);
+
 }
 
 GtkCssValue *
index 059caee845a09a892d6c4f19747fda218e578777..69274464bc1d9e273d0205dac3c2f1d398187e08 100644 (file)
@@ -71,11 +71,6 @@ void                    _gtk_css_computed_values_compute_value        (GtkCssCom
                                                                        guint                     id,
                                                                        GtkCssValue              *specified,
                                                                        GtkCssSection            *section);
-void                    _gtk_css_computed_values_set_value            (GtkCssComputedValues     *values,
-                                                                       guint                     id,
-                                                                       GtkCssValue              *value,
-                                                                       GtkCssDependencies        dependencies,
-                                                                       GtkCssSection            *section);
 void                    _gtk_css_computed_values_set_animated_value   (GtkCssComputedValues     *values,
                                                                        guint                     id,
                                                                        GtkCssValue              *value);
index 8166ee9de9e0c4d568ad7133068aa7297e5ccf18..2c8b6b87d76c67c390531fc439d1617ce4f5c7d8 100644 (file)
@@ -91,40 +91,6 @@ _gtk_css_lookup_set (GtkCssLookup  *lookup,
   lookup->values[id].section = section;
 }
 
-/**
- * _gtk_css_lookup_set_computed:
- * @lookup: the lookup
- * @id: id of the property to set, see _gtk_style_property_get_id()
- * @section: (allow-none): The @section the value was defined in or %NULL
- * @value: the “computed value” to use
- *
- * Sets the @value for a given @id. No value may have been set for @id
- * before. See _gtk_css_lookup_is_missing(). This function is used to
- * set the “winning declaration” of a lookup. Note that for performance
- * reasons @value and @section are not copied. It is your responsibility
- * to ensure they are kept alive until _gtk_css_lookup_free() is called.
- *
- * As opposed to _gtk_css_lookup_set(), this function forces a computed
- * value and will not cause computation to happen. In particular, with this
- * method relative lengths or symbolic colors can not be used. This is
- * usually only useful for doing overrides. It should not be used for proper
- * CSS.
- **/
-void
-_gtk_css_lookup_set_computed (GtkCssLookup  *lookup,
-                              guint          id,
-                              GtkCssSection *section,
-                              GtkCssValue  *value)
-{
-  g_return_if_fail (lookup != NULL);
-  g_return_if_fail (_gtk_bitmask_get (lookup->missing, id));
-  g_return_if_fail (value != NULL);
-
-  lookup->missing = _gtk_bitmask_set (lookup->missing, id, FALSE);
-  lookup->values[id].computed = value;
-  lookup->values[id].section = section;
-}
-
 /**
  * _gtk_css_lookup_resolve:
  * @lookup: the lookup
@@ -155,14 +121,8 @@ _gtk_css_lookup_resolve (GtkCssLookup            *lookup,
 
   for (i = 0; i < n; i++)
     {
-      if (lookup->values[i].computed)
-        _gtk_css_computed_values_set_value (values,
-                                            i,
-                                            lookup->values[i].computed,
-                                            0,
-                                            lookup->values[i].section);
-      else if (lookup->values[i].value ||
-               _gtk_bitmask_get (lookup->missing, i))
+      if (lookup->values[i].value ||
+          _gtk_bitmask_get (lookup->missing, i))
         _gtk_css_computed_values_compute_value (values,
                                                 provider,
                                                scale,
index 9287ccb90261729bc3d0bc1516f0f42ee1d31c23..5b257c577af65540362eb66c223162b4e31746b7 100644 (file)
@@ -31,7 +31,6 @@ typedef struct _GtkCssLookup GtkCssLookup;
 typedef struct {
   GtkCssSection     *section;
   GtkCssValue       *value;
-  GtkCssValue       *computed;
 } GtkCssLookupValue;
 
 struct _GtkCssLookup {
@@ -49,10 +48,6 @@ void                    _gtk_css_lookup_set                     (GtkCssLookup
                                                                  guint                       id,
                                                                  GtkCssSection              *section,
                                                                  GtkCssValue                *value);
-void                    _gtk_css_lookup_set_computed            (GtkCssLookup               *lookup,
-                                                                 guint                       id,
-                                                                 GtkCssSection              *section,
-                                                                 GtkCssValue                *value);
 void                    _gtk_css_lookup_resolve                 (GtkCssLookup               *lookup,
                                                                  GtkStyleProviderPrivate    *provider,
                                                                 int                         scale,
index e6170209d014bf53d53cc9a27f37f26f0db16255..d751227de89d33061f122fda1ff1f7a5f7c7db52 100644 (file)
@@ -327,7 +327,7 @@ gtk_style_properties_provider_lookup (GtkStyleProviderPrivate *provider,
       if (value == NULL)
         continue;
 
-      _gtk_css_lookup_set_computed (lookup, id, NULL, value);
+      _gtk_css_lookup_set (lookup, id, NULL, value);
     }
 }